package com.neusoft.demo2;

import javax.swing.plaf.synth.SynthTextAreaUI;
import java.util.Scanner;

/**
 * ******************欢迎登录*******************
 * 请输入账号:
 *  fender
 * 请输入密码:
 *  123456
 *  账户名和密码不正确，请重新输入今日还有2次机会，如果三次都错误，提示用户吞卡
 *
 *  请输入账号: gibson
 *  请输入密码: 111111
 *  登录成功
 *  1. 查询余额  2. 存款  3. 取款  4. 修改密码  5. 退出系统
 *  请选择菜单： 1
 *  您的余额为10000.0
 *  是否继续操作(y/n)
 *  y
 *  1. 查询余额  2. 存款  3. 取款  4. 修改密码  5. 退出系统
 *  请选择菜单： 2
 *  请输入您要存款的金额 : 20000
 *  单次存款的金额超过1万元
 *  是否继续操作(y/n): y
 *   1. 查询余额  2. 存款  3. 取款  4. 修改密码  5. 退出系统
 *   请选择菜单： 2
 *   请输入您要存款的金额 : -200
 *   存款金额错误
 *   是否继续操作(y/n): y
 *   1. 查询余额  2. 存款  3. 取款  4. 修改密码  5. 退出系统
 *   请选择菜单： 2
 *   请输入您要存款的金额 : 98
 *   请输入100的整数倍存款
 *   是否继续操作(y/n): y
 *   1. 查询余额  2. 存款  3. 取款  4. 修改密码  5. 退出系统
 *   请选择菜单： 2
 *   请输入您要存款的金额 : 8000
 *   存款成功，当前的余额18000.0
 *   是否继续操作(y/n): y
 *    1. 查询余额  2. 存款  3. 取款  4. 修改密码  5. 退出系统
 *    请选择菜单： 3
 *    请输入取款的金额： 30000
 *    余额不足
 *    是否继续操作(y/n): y
 *    1. 查询余额  2. 存款  3. 取款  4. 修改密码  5. 退出系统
 *    请选择菜单： 3
 *    请输入取款的金额： 5000
 *    单次取款金额超过3000
 *    是否继续操作(y/n): y
 *    1. 查询余额  2. 存款  3. 取款  4. 修改密码  5. 退出系统
 *    请选择菜单： 3
 *    请输入取款的金额： 1500
 *    取款成功，当前的余额：16500
 *    是否继续操作(y/n): y
 *    1. 查询余额  2. 存款  3. 取款  4. 修改密码  5. 退出系统
 *    请选择菜单： 4
 *    请输入旧密码: test123
 *    旧密码输入错误，当前的密码是123
 *    是否继续操作(y/n): y
 *    1. 查询余额  2. 存款  3. 取款  4. 修改密码  5. 退出系统
 *    请选择菜单： 4
 *    请输入旧密码: 123
 *    请输入新密码: test123
 *    请再次输入新密码: test123  注意：两次密码需要相同
 *    密码修改成功，当前密码为: test123
 *
 *    是否继续操作(y/n): y
 *    1. 查询余额  2. 存款  3. 取款  4. 修改密码  5. 退出系统(System.exit(0))
 *
 *
 *    思考：需要定义几个方法?
 *    1. 欢迎界面
 *    2. 登录 参数和返回值类型
 *    3. 查询余额
 *    4. 存款
 *    5. 取款
 *    6. 修改密码
 *    7. 判断是否继续
 *
 *    注意：只有在用户登录成功的情况下才能操作菜单
 *
 */
public class Example {
    /**
     * 欢迎界面
     */
    public static void welcome() {
        System.out.println("******************欢迎登录*******************");
        System.out.println("******************版本1.0*******************");
    }

    /**
     * 登录
     * @param username
     * @param password
     * @return
     */
    public static boolean login(String username,String password) {
        Scanner input = new Scanner(System.in);
        for (int i = 3;i > 0;i--) {
            System.out.println("请输入账号:");
            String new_user = input.next();
            System.out.println("请输入密码:");
            String new_pwd = input.next();
            if(username.equals(new_user) && password.equals(new_pwd)) {
                System.out.println("登录成功!!!!!!");
                return true;
            }else {
                if(i - 1 == 0) {
                    System.out.println("三次错误，吞卡");
                    System.exit(0);
                }
                System.out.println("用户名密码错误，请重新输入，您还有"+(i - 1) + "次机会");
            }
        }
        return false;
    }

    /**
     * 查询余额
     */
    public static void checkMoney(double money) {
        System.out.println("您的余额为: " + money);
    }

    /**
     * 存款
     * @param money
     */
    public static double setMoney(double money) {
        Scanner input = new Scanner(System.in);
        System.out.println("输入您要存款的金额: ");
        double addMoney = input.nextDouble();
        if(addMoney > 10000) {
            System.out.println("单次存款的金额超过1万元");
            return 0;
        }else if(addMoney < 0) {
            System.out.println("存款的金额错误");
            return 0;
        }else if(addMoney % 100 != 0) {
            System.out.println("请输入100的整数倍存款");
            return 0;
        }else {
            System.out.println("存款成功，当前的余额为:" + (money + addMoney));
            return addMoney;
        }

    }

    /**
     * 取款
     * @param money
     */
    public static void getMoney(double money) {

    }

    /**
     * 修改密码
     * @param pwd
     * @return
     */
    public static String changePassword(String pwd) {
        return null;
    }

    /**
     * 是否继续
     */
    public static void decide() {
        Scanner input = new Scanner(System.in);
        System.out.println("是否继续(y/n)");
        String dec = input.next();
        if(dec.equals("y")) {
            return;
        }else if(dec.equals("n")) {
            System.out.println("退出系统");
            System.exit(0);
        }else {
            System.out.println("输入错误,重新输入，是否继续(y/n)");
            String temp = input.next();
            if(temp.equals("y")) {
                return;
            }else if(temp.equals("n")) {
                System.out.println("退出系统");
                System.exit(0);
            }
        }
    }


    public static void main(String[] args) {
        //初始化用户的信息
        String username = "admin";//用户名
        String password = "123";//密码
        double money = 10000;//余额
        Scanner input = new Scanner(System.in);
        //main方法负责调用以上自定义方法完成整个需求功能
        //1. 调用welcome方法
        welcome();
        //2. 调用登录的login方法
        boolean b = login(username,password);
        //3. 如果登录成功重复菜单
        while (b) {
            //4. 用户可以根据输入的选项执行某个菜单操作(switch语法)
            System.out.println("1. 查询余额  2. 存款  3. 取款  4. 修改密码  5. 退出系统");
            System.out.println("请输入选择的菜单: ");
            int opt = input.nextInt();
            switch (opt) {
                case 1:
                    //查询余额
                    checkMoney(money);
                    //是否继续
                    decide();
                    break;
                case 2:
                    //存款
                    money += setMoney(money);
                    //是否继续
                    decide();
                    break;
                case 3:
                    //取款
                    break;
                case 4:
                    //修改密码
                    break;
                case 5:
                    //退出系统
                    break;

            }

        }


    }
}
